﻿using System;
using System.Collections.Generic;
using System.Data;
using EvaluacionExalmarOledbHelper;
using EvaluacionExalmarEntidades;
using EvaluacionExalmarInterfaces;
using System.Configuration;
using System.Text;

namespace EvaluacionExalmarAccesoDatos
{
    public class ResultadoCompetJerar : IResultadoCompetJerar
    {
        #region IResultadoCompetJerar Members

        private readonly String _sCadenaConexion = ConfigurationManager.ConnectionStrings["con"].ConnectionString;

        public IList<ResultadoCompetJerarInfo> Listar(ResultadoCompetJerarInfo oResultado)
        {
            var query = new StringBuilder("Select Id_Empleado, Id_Competencia, Competencia, Id_Tipo_Jerarquia, Tipo_Jerarquia, Promedio, Id_Pregunta, Pregunta From ConsultaResultadosXJerarquia ");

            if (oResultado != null)
            {
                if (oResultado.IdEmpleado.HasValue)
                {
                    query.Append(" Where Id_Empleado = " + oResultado.IdEmpleado);
                }
            }

            var oListaResultado = new List<ResultadoCompetJerarInfo>();

            using (var drd = OleDbHelper.ExecuteReader(_sCadenaConexion, CommandType.Text, query.ToString()))
            {
                if (drd != null)
                {
                    if (drd.HasRows)
                    {
                        while (drd.Read())
                        {
                            oListaResultado.Add(new ResultadoCompetJerarInfo(
                                drd.GetInt32(0),
                                drd.GetInt32(1), new CompetenciaInfo(drd.GetInt32(1), drd.GetString(2), null),
                                drd.GetInt32(3), new TipoJerarquiaInfo(drd.GetInt32(3), drd.GetString(4), null),
                                Double.Parse(drd.GetValue(5).ToString()),
                                drd.GetInt32(6), new PreguntaInfo(null, null, null, drd.GetInt32(6), null, drd.GetString(7).Trim(), null)
                                ));
                        }
                    }
                }
            }

            return oListaResultado;
        }

        #endregion
    }
}
